#ifndef CONFIG_H
#define CONFIG_H

#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif

#include <QtGlobal>

#if QT_VERSION >= 0x050000
#include <QtWidgets/QApplication>
#include <QtWidgets/QMessageBox>
#else
#include <QApplication>
#include <QMessageBox>
#endif

#include <QSettings>

//************************************
// 作者:			花心胡萝卜
// 函数名称:		saveConfig
// 函数功能:		保存配置文件
// 作用域:		public 
// 返回值:		int
// 限定符:		
// 参数:			QString strGroupName	ini文件配置组名
// 参数:			QStringList strKeys		ini文件配置键的组合列表
// 参数:			QStringList strValues	ini文件配置值的组合列表
//************************************
int saveConfig(QString strGroupName, QStringList strKeys, QStringList strValues);
//************************************
// 作者:			花心胡萝卜
// 函数名称:		loadConfig
// 函数功能:		加载配置文件
// 作用域:		public 
// 返回值:		QStringList		值的列表
// 限定符:		
// 参数:			QString strGroupName	ini文件配置组名
// 参数:			QStringList strKeys		ini文件配置键的组合列表
//************************************
QStringList loadConfig(QString strGroupName, QStringList strKeys);

//************************************
// 作者:			花心胡萝卜
// 函数名称:		loadConfig
// 函数功能:		加载配置文件
// 作用域:		public 
// 返回值:		QString		值
// 限定符:		
// 参数:			QString strGroupName	ini文件配置组名
// 参数:			QString strKey			ini文件配置键值
//************************************
QString loadConfig(QString strGroupName, QString strKey);

//************************************
// 作者:			花心胡萝卜
// 函数名称:		loadConfig
// 函数功能:		加载配置文件
// 作用域:		public 
// 返回值:		QStringList		值的列表
// 限定符:		
// 参数:			QString strGroupName	ini文件配置组名
// 参数:			QStringList strKeys		ini文件配置键的组合列表
// 参数:			int iFlag				无用参数 随意传
//************************************
QMap<QString, QString> loadConfig(QString strGroupName, QStringList strKeys, int iFlag);

//************************************
// 作者:			花心胡萝卜
// 函数名称:		delConfig
// 函数功能:		删除配置项
// 作用域:		public 
// 返回值:		int
// 限定符:		
// 参数:			QString strGroupName	ini文件配置组名
// 参数:			QStringList strKeys		ini文件配置键的组合列表 传递NULL则删除所有strGroupName指定的配置
//************************************
int delConfig(QString strGroupName, QStringList strKeys);

//************************************
// 作者:			花心胡萝卜
// 函数名称:		saveConfig
// 函数功能:		保存配置项
// 作用域:		public 
// 返回值:		int
// 限定符:		
// 参数:			QString strCfgFilePath	文件路径, 末尾不能有 / 或者 \
// 参数:			QString strGroupName	ini文件配置项组名
// 参数:			QStringList strKeys		ini文件配置键的集合列表
// 参数:			QStringList strValues	ini文件配置值的集合列表
//************************************
int saveConfig(QString strCfgFilePath, QString strGroupName, QStringList strKeys, QStringList strValues);
//************************************
// 作者:			花心胡萝卜
// 函数名称:		loadConfig
// 函数功能:		加载配置项
// 作用域:		public 
// 返回值:		QStringList
// 限定符:		
// 参数:			QString strCfgFilePath	文件路径, 末尾不能有 / 或者 \
// 参数:			QString strGroupName	ini文件配置项组名
// 参数:			QStringList strKeys		ini文件配置键的集合列表
//************************************
QStringList loadConfig(QString strCfgFilePath, QString strGroupName, QStringList strKeys);
//************************************
// 作者:			花心胡萝卜
// 函数名称:		delConfig
// 函数功能:		delConfig
// 作用域:		public 
// 返回值:		int
// 限定符:		
// 参数:			QString strCfgFilePath	文件路径, 末尾不能有 / 或者 \
// 参数:			QString strGroupName	ini文件配置项组名
// 参数:			QStringList strKeys		ini文件配置键的集合列表 传递NULL则删除所有strGroupName指定的配置
//************************************
int delConfig(QString strCfgFilePath, QString strGroupName, QStringList strKeys);

//************************************
// 作者:			花心胡萝卜
// 函数名称:		saveConfig
// 函数功能:		保存配置项
// 作用域:		public 
// 返回值:		int
// 限定符:		
// 参数:			QString strCfgFilePath	ini文件路径, 末尾不能有 / 或者 \
// 参数:			QString strCfgFileName	ini文件名	不包含 .ini 后缀
// 参数:			QString strGroupName	ini文件配置项组名
// 参数:			QStringList strKeys		ini文件配置键的集合列表
// 参数:			QStringList strValues	ini文件配置值的集合列表
//************************************
int saveConfig(QString strCfgFilePath, QString strCfgFileName, QString strGroupName, QStringList strKeys, QStringList strValues);
//************************************
// 作者:			花心胡萝卜
// 函数名称:		loadConfig
// 函数功能:		加载配置项
// 作用域:		public 
// 返回值:		QStringList
// 限定符:		
// 参数:			QString strCfgFilePath	ini文件路径, 末尾不能有 / 或者 \
// 参数:			QString strCfgFileName	ini文件名	不包含 .ini 后缀
// 参数:			QString strGroupName	ini文件配置项组名
// 参数:			QStringList strKeys		ini文件配置键的集合列表
//************************************
QStringList loadConfig(QString strCfgFilePath, QString strCfgFileName, QString strGroupName, QStringList strKeys);
//************************************
// 作者:			花心胡萝卜
// 函数名称:		delConfig
// 函数功能:		删除配置项
// 作用域:		public 
// 返回值:		int
// 限定符:		
// 参数:			QString strCfgFilePath	ini文件路径, 末尾不能有 / 或者 \
// 参数:			QString strCfgFileName	ini文件名	不包含 .ini 后缀
// 参数:			QString strGroupName	ini文件配置项组名
// 参数:			QStringList strKeys		ini文件配置键的集合列表 传递NULL则删除所有strGroupName指定的配置
//************************************
int delConfig(QString strCfgFilePath, QString strCfgFileName, QString strGroupName, QStringList strKeys);


//************************************
// 作者:			花心胡萝卜
// 函数名称:		loadConfig
// 函数功能:		加载配置项
// 作用域:		public 
// 返回值:		QList<QMap<QString, QString>>
// 限定符:		
// 参数:			QString strCfgFilePath	ini文件路径, 末尾不能有 / 或者 \
// 参数:			QString strCfgFileName	ini文件名	不包含 .ini 后缀
// 参数:			QString strGroupName	ini文件配置项组名
// 参数:			QStringList strKeys		ini文件配置键的集合列表
// 参数:			int iFlag				无用参数 随意传
//************************************
QMap<QString, QString> loadConfig(QString strCfgFilePath, QString strCfgFileName, QString strGroupName, QStringList strKeys, int iFlag);
// QList<QMap<QString, QString>> loadConfig(QString strCfgFilePath, QString strCfgFileName, QString strGroupName, QStringList strKeys, int iFlag);

#endif // CONFIG_H